iT邦幫忙

2023 iThome 鐵人賽

DAY 21
0
Odoo

Odoo開發系列 第 21

[Day21]odoo14 - mail寄送介紹

  • 分享至 

  • xImage
  •  

昨天教大家建立完mail模板後,今天要換來介紹如何用function來動態代入額外需要的資料進mail中,以及在寄送mail時可以設置的其他參數
先上範例:

def idx_send_mail(self):
    repair_ids = self.env['idx.repair'].search([('state', '=', 'draft')])
    for rec in repair_ids:
        # 指定寄件人
        email_from = '系統通知 <admin@example.com>'
        # 指定mail模板
        template = request.env.ref('odoo14_idx_repair.remind_service_email_template')
        # 組單據網址
        web_base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
        menu_id = self.env.ref('odoo14_idx_repair.idx_repair', raise_if_not_found=False)
        action_id = self.env.ref('odoo14_idx_repair.action_idx_repair', raise_if_not_found=False)
        url = """{}/web#id={}&action={}&view_type=form&model=idx.repair&menu_id={}""".format(
            web_base_url,
            rec.id,
            action_id.id,
            menu_id.id)
        context = dict(self.env.context or {})
        context.update({
            'url': url
        })
        email_values = {
            'email_from': email_from,
        }
        template.sudo().with_context(context).send_mail(rec.id, force_send=True, email_values=email_values)

以範例為例,先撈出所有單據,再一一處理每筆單據,之後指定此封mail要使用的模板。
我們可能在寄送mail時,希望將單據的網址一同放在信件內容裡,方便收件者快速查看該張單據,就像範例中可以在function中先將網址組起來,再透過context傳遞給模板,這樣就可做到動態代入資料的部分。
send_mail(單據id, force_send=True, email_values)為原生提供的寄送mail的function,force_send在下面詳細介紹,email_values為可選的參數,用來設置mail模板原有的資料外的信件相關資訊。

在寄送mail時,可以選擇立即寄送或是在指定的時間才進行寄送。

  • 立即寄送:將force_send設為True,就會立即發送,範例如下:
template.sudo().send_mail(cont.id, force_send=True)
  • 指定時間寄送:force_send設定為False,並記得email_values加上指定寄送的時間,到了指定的時間便會自動寄送。
email_values = {'scheduled_date': self.scheduled_date.strftime("%Y-%m-%d %H:%M")}
template_id.send_mail(payslip_id.id, force_send=False, email_values=email_values)

以上就是mail相關的各項介紹,希望大家看完這幾天的文章之後能夠更瞭解odoo中的mail功能,除了文章內有提到的部分,原生的模組中還有更多對於mail相關的應用可以供大家參考。


上一篇
[Day20]odoo14 - mail模板介紹
下一篇
[Day22] odoo14 - 排程(ir.corn)介紹
系列文
Odoo開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言